{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第二十八讲：正定矩阵和最小值\n",
    "\n",
    "本讲我们会了解如何完整的测试一个矩阵是否正定，测试$x^TAx$是否具有最小值，最后了解正定的几何意义——椭圆（ellipse）和正定性有关，双曲线（hyperbola）与正定无关。另外，本讲涉及的矩阵均为实对称矩阵。\n",
    "\n",
    "## 正定性的判断\n",
    "\n",
    "我们仍然从二阶说起，有矩阵$A=\\begin{bmatrix}a&b\\\\b&d\\end{bmatrix}$，判断其正定性有以下方法：\n",
    "\n",
    "1. 矩阵的所有特征值大于零则矩阵正定：$\\lambda_1>0,\\ \\lambda_2>0$；\n",
    "2. 矩阵的所有顺序主子阵（leading principal submatrix）的行列式（即顺序主子式，leading principal minor）大于零则矩阵正定：$a>0,\\ ac-b^2>0$；\n",
    "3. 矩阵消元后主元均大于零：$a>0,\\ \\frac{ac-b^2}{a}>0$；\n",
    "4. $x^TAx>0$；\n",
    "\n",
    "大多数情况下使用4来定义正定性，而用前三条来验证正定性。\n",
    "\n",
    "来计算一个例子：$A=\\begin{bmatrix}2&6\\\\6&?\\end{bmatrix}$，在$?$处填入多少才能使矩阵正定？\n",
    "\n",
    "* 来试试$18$，此时矩阵为$A=\\begin{bmatrix}2&6\\\\6&18\\end{bmatrix}$，$\\det A=0$，此时的矩阵成为半正定矩阵（positive semi-definite）。矩阵奇异，其中一个特征值必为$0$，从迹得知另一个特征值为$20$。矩阵的主元只有一个，为$2$。\n",
    "\n",
    "    计算$x^TAx$，得$\\begin{bmatrix}x_1&x_2\\end{bmatrix}\\begin{bmatrix}2&6\\\\6&18\\end{bmatrix}\\begin{bmatrix}x_1\\\\x_2\\end{bmatrix}=2x_1^2+12x_1x_2+18x_2^2$这样我们得到了一个关于$x_1,x_2$的函数$f(x_1,x_2)=2x_1^2+12x_1x_2+18x_2^2$，这个函数不再是线性的，在本例中这是一个纯二次型（quadratic）函数，它没有线性部分、一次部分或更高次部分（$Ax$是线性的，但引入$x^T$后就成为了二次型）。\n",
    "\n",
    "    当$?$取$18$时，判定1、2、3都是“刚好不及格”。\n",
    "    \n",
    "* 我们可以先看“一定不及格”的样子，令$?=7$，矩阵为$A=\\begin{bmatrix}2&6\\\\6&7\\end{bmatrix}$，二阶顺序主子式变为$-22$，显然矩阵不是正定的，此时的函数为$f(x_1,x_2)=2x_1^2+12x_1x_2+7x_2^2$，如果取$x_1=1,x_2=-1$则有$f(1,-1)=2-12+7<0$。\n",
    "\n",
    "    如果我们把$z=2x^2+12xy+7y^2$放在直角坐标系中，图像过原点$z(0,0)=0$，当$y=0$或$x=0$或$x=y$时函数为开口向上的抛物线，所以函数图像在某些方向上是正值；而在某些方向上是负值，比如$x=-y$，所以函数图像是一个马鞍面（saddle），$(0,0,0)$点称为鞍点（saddle point），它在某些方向上是极大值点，而在另一些方向上是极小值点。（实际上函数图像的最佳观测方向是沿着特征向量的方向。）\n",
    "\n",
    "* 再来看一下“一定及格”的情形，令$?=20$，矩阵为$A=\\begin{bmatrix}2&6\\\\6&20\\end{bmatrix}$，行列式为$\\det A=4$，迹为$trace(A)=22$，特征向量均大于零，矩阵可以通过测试。此时的函数为$f(x_1,x_2)=2x_1^2+12x_1x_2+20x_2^2$，函数在除$(0,0)$外处处为正。我们来看看$z=2x^2+12xy+20y^2$的图像，式子的平方项均非负，所以需要两个平方项之和大于中间项即可，该函数的图像为抛物面（paraboloid）。在$(0,0)$点函数的一阶偏导数均为零，二阶偏导数均为正（马鞍面的一阶偏导数也为零，但二阶偏导数并不均为正，所以），函数在改点取极小值。\n",
    "\n",
    "    在微积分中，一元函数取极小值需要一阶导数为零且二阶导数为正$\\frac{\\mathrm{d}u}{\\mathrm{d}x}=0, \\frac{\\mathrm{d}^2u}{\\mathrm{d}x^2}>0$。在线性代数中我们遇到了了多元函数$f(x_1,x_2,\\cdots,x_n)$，要取极小值需要二阶偏导数矩阵为正定矩阵。\n",
    "    \n",
    "    在本例中（即二阶情形），如果能用平方和的形式来表示函数，则很容易看出函数是否恒为正，$f(x,y)=2x^2+12xy+20y^2=2\\left(x+3y\\right)^2+2y^2$。另外，如果是上面的$?=7$的情形，则有$f(x,y)=2(x+3y)^2-11y^2$，如果是$?=18$的情形，则有$f(x,y)=2(x+3y)^2$。\n",
    "    \n",
    "    如果令$z=1$，相当于使用$z=1$平面截取该函数图像，将得到一个椭圆曲线。另外，如果在$?=7$的马鞍面上截取曲线将得到一对双曲线。\n",
    "    \n",
    "    再来看这个矩阵的消元，$\\begin{bmatrix}2&6\\\\6&20\\end{bmatrix}=\\begin{bmatrix}1&0\\\\-3&1\\end{bmatrix}\\begin{bmatrix}2&6\\\\0&2\\end{bmatrix}$，这就是$A=LU$，可以发现矩阵$L$中的项与配平方中未知数的系数有关，而主元则与两个平方项外的系数有关，这也就是为什么正数主元得到正定矩阵。\n",
    "    \n",
    "    上面又提到二阶导数矩阵，这个矩阵型为$\\begin{bmatrix}f_{xx}&f_{xy}\\\\f_{yx}&f_{yy}\\end{bmatrix}$，显然，矩阵中的主对角线元素（纯二阶导数）必须为正，并且主对角线元素必须足够大来抵消混合导数的影响。同时还可以看出，因为二阶导数的求导次序并不影响结果，所以矩阵必须是对称的。现在我们就可以计算$n\\times n$阶矩阵了。\n",
    "    \n",
    "接下来计算一个三阶矩阵，$A=\\begin{bmatrix}2&-1&0\\\\-1&2&-1\\\\0&-1&2\\end{bmatrix}$，它是正定的吗？函数$x^TAx$是多少？函数在原点去最小值吗？图像是什么样的？\n",
    "\n",
    "* 先来计算矩阵的顺序主子式，分别为$2,3,4$；再来计算主元，分别为$2,\\frac{3}{2},\\frac{4}{3}$；计算特征值，$\\lambda_1=2-\\sqrt 2,\\lambda_2=2,\\lambda_3=2+\\sqrt 2$。\n",
    "* 计算$x^TAx=2x_1^2+2x_2^2+2x_3^2-2x_1x_2-2x_2x_3$。\n",
    "* 图像是四维的抛物面，当我们在$f(x_1,x_2,x_3)=1$处截取该面，将得到一个椭圆体。一般椭圆体有三条轴，特征值的大小决定了三条轴的长度，而特征向量的方向与三条轴的方向相同。\n",
    "\n",
    "现在我们将矩阵$A$分解为$A=Q\\Lambda Q^T$，可以发现上面说到的各种元素都可以表示在这个分解的矩阵中，我们称之为主轴定理（principal axis theorem），即特征向量说明主轴的方向、特征值说明主轴的长度。\n",
    "\n",
    "$A=Q\\Lambda Q^T$是特征值相关章节中最重要的公式。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
